iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
Security

從0開始的打Pwn教學系列 第 19

【Day-19】程式結束後去哪了 - 2

  • 分享至 

  • xImage
  •  

Ubuntu的GDB講完了,我們這次來看Cygwin到IDA結束的樣子。
可以看到第一個是將EAX設為0,這個是之前就出現過的,讓系統知道這個程式並沒有出現錯誤,再來就是將RSP加30h,從原本的CBE0+30h到CC10,跟RBP相同的值。
https://ithelp.ithome.com.tw/upload/images/20241003/20169016ZdrBxuosD5.jpg
https://ithelp.ithome.com.tw/upload/images/20241003/20169016ilODcYMjRj.jpg

最後將RBP給POP出去,可以看到Stack現在放的值是7FFFFCD30,也就是說Call過來的程式的RBP是這個值,而他的RIP就是下一行的7FFA5F587FA9。
https://ithelp.ithome.com.tw/upload/images/20241003/20169016xmgL9WSDnX.jpg

而IDA很貼心的在旁邊寫了這個Address是哪一隻程式的,可以看到是Cygwin1.dll,這個跟一開始的call __main是一樣的程式,因此可以大概推測出只要是用Cygwin寫的程式,開始和結束都會導入Cygwin1.dll這支動態連結函式庫。
https://ithelp.ithome.com.tw/upload/images/20241003/20169016L9L30hjHg4.png

POP RBP後,如果們預測的相同,RBP變為CD30。
https://ithelp.ithome.com.tw/upload/images/20241003/20169016eg9WazTHqq.png

再下去的話也是和我們預測的一樣會回到Cygwin1.dll,IDA的左邊還有一個藍色的RIP,告知現在程式的RIP指向這裡。
https://ithelp.ithome.com.tw/upload/images/20241003/20169016iICzgghSGR.jpg

至此,我們看了Ubuntu GDB分析GCC所產出來的程式以及Windows IDA分析Cygwin GCC產出來的程式,從哪裡進入到回去哪裡,還有Call function時的變化,這些觀念對於後續的Stack buffer overflow很重要,下一章會開始說明Stack buffer overflow的成因。


上一篇
【Day-18】程式結束後去哪了 - 1
下一篇
【Day-20】Stack buffer overflow 原理
系列文
從0開始的打Pwn教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言